import Vue from 'vue'
import Vuex from 'vuex'
import products from './modules/products'
import cart from './modules/cart'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
      count: 0,
      msg: 'Hello Vuex'
    },
    // store 的计算属性,如果需要对数据进行修改时使用
    getters: {
        reverseMsg (state) {
            return state.msg.split('').reverse().join('')
        }
    },
    // 状态的修改必须通过 mutations 提交，必须同步执行
    mutations: {
        increate(state, payload) {
            state.count += payload
        }
    },
    // 如果需要执行异步操作使用 actions，异步结束后要更改状态需要用 mutations
    actions: {
        increateAsync (context, payload) {
            setTimeout(() => {
                context.commit('increate', payload)
            },2000)
        }
    },
    modules: {
        products,
        cart
    }
})